package com.boss.salary.service;

import com.boss.salary.entity.MakeSalaryData;
import com.boss.sys.ca.user.dto.UserDTO;

import java.util.List;
import java.util.Map;

public interface IPaymentAsyncService {
    /**
     * 检验工资数据是否满足生成
      * @param tokenid
     * @param makeSalaryData
     * @param userDto
     * @return
     */
    Map<String,String> makeSalaryDataAsyncRedis(String tokenid, MakeSalaryData makeSalaryData, UserDTO userDto);
    /**
     *
     * @param tokenid
     * @param makeSalaryData
     * @param userDto
     */
    void checkIsEnoughAsync(String tokenid, MakeSalaryData makeSalaryData, UserDTO userDto);
    /**
     * 不走事务的异步方法（调用下面生成事务的方法，避免事务超时）
     * @param payList
     * @param userDto
     * @param makeSalaryData
     * @param tokenid
     * @param uuid
     * @param totalAgencyIds
     * @param budgetThawpayList 指标冻结集合
     */
    void sentPayMentAsyncForSeate(List<Map<String, Object>> payList,List<Map<String, Object>> budgetThawpayList, UserDTO userDto, MakeSalaryData makeSalaryData, String tokenid, String uuid,List<String> totalAgencyIds);

    /**
     * 走事务的推送支付方法（一个单位一个单位走）
     * @param payListOneAgency
     * @param userDto
     * @param makeSalaryData
     * @param tokenid
     * @param agencyId
     * @param requestMessage
     */
    void toPayment(List<Map<String, Object>> payListOneAgency,List<Map<String, Object>> accountListOneAgency, UserDTO userDto, MakeSalaryData makeSalaryData, String tokenid,String agencyId,StringBuffer requestMessage,String paymentCreateTime );
// 该方法用于postman的信息发送到支付系统
    void postManToPayment(List<Map<String, Object>> payListList,List<Map<String, Object>> accountList, UserDTO userDto, String tokenid,List<String> agencyIds);
}

